8
תגובות

מה לא נכון פה ?

פתח NaseemIB96 ,
לא יודע אני משתגע !

$author = secure('author');

  function secure($name){
    $post = strip_tags(htmlspecialchars($_POST[$name]));
    return $post;
  }


שגיאה : ( ! ) Notice: Undefined index: author in C:\wamp\www\xxxxx\config.php on line 10
Call Stack
# Time Memory Function Location
1 0.0008 375176 {main}( ) ..\xxx_Xxxx.php:0
2 0.0143 383616 secure( ) ..\xxx_Xxxx.php:87

8 תשובות

avatar ענה intval ב 24 למאי 2012 #

אין במערך POST_ אלמנט עם מפתח author.
תבדוק שקיים אלמנט עם מפתח כזה באמצעות isset לפני שאתה מנסה לגשת אליו.

באופן כללי, שתכיר:
מישהו פעם כתב את הפונקציה הזו secure .. חצי מ"מפתחי ה PHP" העתיקו אותה
והבעיה איתה - שהיא לא עושה שום דבר מועיל, אם לא פוגעת במערכת..
למה?
כי צריך לעשות ככה וגם ככה כדי להגן על האתר ולא את מה שהפונקציה הזאת עושה.

avatar ענה NaseemIB96 ב 24 למאי 2012 #

יש לי

<input type="text" name="author" />

זה אומר שקיים נכון ?
לא הבנתי בדיוק מה לעשות עם ISSET

avatar ענה intval ב 24 למאי 2012 #

לא, זה לא אומר שקיים.
תדפיס את המערך באמצעות הפקודה print_r ותדע מה קיים.
http://php.net/FUNCTION_NAME

http://php.net/isset
http://php.net/print_r

avatar ענה NaseemIB96 ב 24 למאי 2012 #

לא מצליח לי, תוכל להגיד לי מה לכתוב בשביל שזה יעבוד ?!

avatar ענה משתמש_218762 ב 25 למאי 2012 #

תראה דוגמא אולי תבין.
בכל מקרה הפונקציה הנ"ל מציקה, לא יעילה ולא מאבטחת שום דבר.
למנוע הזרקת שאילתות - escape_string למינהם (mysql_real_escape_string בMySQL).
למנוע XSS - תעבוד עם htmlentities

avatar ענה משתמש_213253 ב 25 למאי 2012 #

<?php
$author = secure($_POST['name']);

  function secure($name){
    $post = strip_tags(htmlspecialchars($name));
    return $post;
  }
?>

avatar ענה intval ב 25 למאי 2012 #

@213253
מה עשית בזה ? העברת את הודעת השגיאה לשורה אחרת ?

avatar ענה iiddaannyy ב 28 למאי 2012 #

אני זוכר שראיתי את הפונקציה הזאת באחד מהמדריכים ל-php ביוטיוב, וקיוויתי שלא ישתמשו בה.
מאז אני רק רואה יותר ויותר משתמשים בפונקציה secure, שהיא פשוט facepalm אחד גדול.

ניסים, תלמד מה htmlspecialchars עושה ומה strip_tags עושה ותבין שה-strip_tags בפונקציה הזו לא עושה כלום ורק מבזבזת משאבים.
תלמד מתי משתמשים ב-htmlspecialchars (רמז: xss), ומה עושים כדי לסנן נתונים שעומדים להכנס למסד (רמז: real_escape_string) כדי למנוע חורי אבטחה (רמז: sql injection).


בנוגע לבעיה שלך, תדפיס את המערך POST_ כדי לוודא שאכן מגיע המפתח author:

var_dump($_POST);